package com.wjw.enums;

import java.util.HashMap;
import java.util.Map;

/**
 * Enum - 动漫类型
 *
 * @author ikaros
 * @date 2024-07-22 22:59:31
 * @see <a href="ikaros@qq.com">mailTo: ikaros@qq.com</a>
 */
public enum AnimeTypeEnum implements CustomEnum<AnimeTypeEnum> {
    /**
     * 异世界
     */
    ALIEN(1),
    /**
     * 日常
     */
    DAILY(2)

    ;

    AnimeTypeEnum(int ordinal) {
        this.ordinal = ordinal;
    }

    /**
     * 序数
     */
    private final int ordinal;
    /**
     * 描述
     */
    private static final Map<AnimeTypeEnum, String> DESC =
            new HashMap<AnimeTypeEnum, String>(values().length + 1, 1);

    static {
        deployDesc(ALIEN, "异世界动漫");
        deployDesc(DAILY, "日常动漫");
    }

    /**
     * 根据序数查找
     *
     * @param ordinal 序数
     * @return {@link AnimeTypeEnum}
     */
    public static AnimeTypeEnum getByOrdinal(Integer ordinal) {
        if (ordinal == null) {
            return null;
        }
        for (AnimeTypeEnum value : values()) {
            if (value.getOrdinal() == ordinal) {
                return value;
            }
        }
        return null;
    }

    /**
     * 注册描述信息
     *
     * @param target 描述对象
     * @param desc   描述信息
     */
    public static void deployDesc(AnimeTypeEnum target, String desc) {
        if (target == null || desc == null) {
            return;
        }
        DESC.put(target, desc);
    }

    @Override
    public int getOrdinal() {
        return ordinal;
    }

    @Override
    public String getDesc() {
        return DESC.get(this);
    }

    @Override
    public String getName() {
        return this.name();
    }
}
